import { RoleVO } from '@/api/system/role/types';
import { PostVO } from '@/api/system/post/types';

/**
 * 用户信息
 */
export interface UserInfo {
  user: UserVO;
  roles: string[];
  permissions: string[];
}

/**
 * 用户查询对象类型
 */
export interface UserQuery extends PageQuery {
  userName?: string;
  nickName?: string;
  phonenumber?: string;
  status?: string;
  deptId?: string | number;
  roleId?: string | number;
  userIds?: string;
}

/**
 * 用户返回对象
 */
export interface UserVO extends BaseEntity {
  userId: string | number;
  tenantId: string;
  deptId: number;
  userName: string;
  nickName: string;
  userType: string;
  email: string;
  phonenumber: string;
  sex: string;
  avatar: string;
  status: string;
  delFlag: string;
  loginIp: string;
  loginDate: string;
  remark: string;
 /**
   * 部门名
   */
  departmentName: string;

  /**
   * 人员类别, 存0或者1这种字符
   */
  personnelCategory: string;

  /**
   * 职员性质, 存0或者1这种字符
   */
  employeeNature: string;

  /**
   * 身份证号
   */
  idCardNumber: string | number;

  /**
   * 人员年龄
   */
  age: number;

  /**
   * 入职日期
   */
  hireDate: string;

  /**
   * 分配状态, 存0或者1这种字符
   */
  allocationStatus: string;

  /**
   * 离职日期
   */
  resignationDate: string;

  /**
   * 工龄
   */
  serviceYears: string;

  /**
   * 合同性质, 存0或者1这种字符
   */
  contractType: string;

  /**
   * 工资卡号
   */
  salaryCardNumber: string;

  /**
   * 联系电话
   */
  contactNumber: string;

  /**
   * 人员生日
   */
  dateOfBirth: string;

  /**
   * 人员学历
   */
  educationLevel: string;

  /**
   * 毕业学校
   */
  graduationschool: string;

  /**
   * 专业
   */
  major: string;

  /**
   * 工作简地址
   */
  workResume: string;

  /**
   * 工作待遇
   */
  jobTreatment: string;

  /**
   * 工作信息
   */
  jobInformation: string;

  /**
   * 备注信息
   */
  remarks: string;

    /**
     * 子对象
     */
  deptName: string;
  roles: RoleVO[];
  roleIds: any;
  postIds: any;
  roleId: any;
  admin: boolean;
}

/**
 * 用户表单类型
 */
export interface UserForm {
  id?: string;
  userId?: string;
  deptId?: number;
  userName: string;
  nickName?: string;
  password: string;
  phonenumber?: string;
  email?: string;
  sex?: string;
  status?: string;
  userType?: string;
  avatar?:string;
  remark?: string;
  postIds: string[];
  roleIds: string[];
/**
   * 部门名
   */
  departmentName?: string;

  /**
   * 人员类别, 存0或者1这种字符
   */
  personnelCategory?: string;

  /**
   * 职员性质, 存0或者1这种字符
   */
  employeeNature?: string;

  /**
   * 身份证号
   */
  idCardNumber?: string | number;

  /**
   * 人员年龄
   */
  age?: number;

  /**
   * 入职日期
   */
  hireDate?: string;

  /**
   * 分配状态, 存0或者1这种字符
   */
  allocationStatus?: string;

  /**
   * 离职日期
   */
  resignationDate?: string;

  /**
   * 工龄
   */
  serviceYears?: string;

  /**
   * 合同性质, 存0或者1这种字符
   */
  contractType?: string;

  /**
   * 工资卡号
   */
  salaryCardNumber?: string;

  /**
   * 联系电话
   */
  contactNumber?: string;

  /**
   * 人员生日
   */
  dateOfBirth?: string;

  /**
   * 人员学历
   */
  educationLevel?: string;

  
  /**
   * 毕业学校
   */
  graduationschool?: string;

  /**
   * 专业
   */
  major?: string;

  /**
   * 工作简地址
   */
  workResume?: string;

  /**
   * 工作待遇
   */
  jobTreatment?: string;

  /**
   * 工作信息
   */
  jobInformation?: string;

  /**
   * 备注信息
   */
  remarks?: string;
}

export interface UserInfoVO {
  user: UserVO;
  roles: RoleVO[];
  roleIds: string[];
  posts: PostVO[];
  postIds: string[];
  roleGroup: string;
  postGroup: string;
}

export interface ResetPwdForm {
  oldPassword: string;
  newPassword: string;
  confirmPassword: string;
}

export interface UserQuery {

  /**
   * 部门ID
   */
  deptId?: string | number;

  /**
   * 用户账号
   */
  userName?: string;

  /**
   * 用户昵称
   */
  nickName?: string;

  /**
   * 用户类型（sys_user系统用户）
   */
  userType?: string;

  /**
   * 用户邮箱
   */
  email?: string;

  /**
   * 手机号码
   */
  phonenumber?: string;

  /**
   * 用户性别（0男 1女 2未知）
   */
  sex?: string;

  /**
   * 头像地址
   */
  avatar?: number;

  /**
   * 密码
   */
  password?: string;

  /**
   * 帐号状态（0正常 1停用）
   */
  status?: string;

  /**
   * 最后登录IP
   */
  loginIp?: string;

  /**
   * 最后登录时间
   */
  loginDate?: string;

  /**
   * 部门名
   */
  departmentName?: string;

  /**
   * 人员类别, 存0或者1这种字符
   */
  personnelCategory?: string;

  /**
   * 职员性质, 存0或者1这种字符
   */
  employeeNature?: string;

  /**
   * 身份证号
   */
  idCardNumber?: string | number;

  /**
   * 人员年龄
   */
  age?: number;

  /**
   * 入职日期
   */
  hireDate?: string;

  /**
   * 分配状态, 存0或者1这种字符
   */
  allocationStatus?: string;

  /**
   * 离职日期
   */
  resignationDate?: string;

  /**
   * 工龄
   */
  serviceYears?: string;

  /**
   * 合同性质, 存0或者1这种字符
   */
  contractType?: string;

  /**
   * 工资卡号
   */
  salaryCardNumber?: string;

  /**
   * 联系电话
   */
  contactNumber?: string;

  /**
   * 人员生日
   */
  dateOfBirth?: string;

  /**
   * 人员学历
   */
  educationLevel?: string;

    
  /**
   * 毕业学校
   */
  graduationschool?: string;

  /**
   * 专业
   */
  major?: string;


  /**
   * 工作简地址
   */
  workResume?: string;

  /**
   * 工作待遇
   */
  jobTreatment?: string;

  /**
   * 工作信息
   */
  jobInformation?: string;

  /**
   * 备注信息
   */
  remarks?: string;

    /**
     * 日期范围参数
     */
    params?: any;
}